#This dockerfile uses the ubuntu image
#指定基于的基础镜像,可以使用多个FROM指令，如果在同一个Dockerfile中创建多个镜像时，可以使用多个FROM指令（每个镜像一次）
FROM centos:7.6.1810

#MAINTAINER 指定维护者信息
#MAINTAINER Liu Lu <liulu_heu@qq.com>


#ENV 指定一个环境变量，会被后续RUN指令使用，并在容器运行时保持。
#ENV <key> <value>
#ENV DEBIAN_FRONTEND noninteractive(设置环境变量，所有操作都是非交互式的)

#RUN 镜像的操作指令
#格式为RUN <command>或RUN ["executable","param1","param2"],前者将在shell终端中运行命令，即/bin/sh -c;后者则可使用exec执行。每条RUN指令将会在当前镜像基础上执行指定命令，并提交为新的镜像。当命令较长时，可以使用\来换行。
# 更新所有包, 安装 git, 添加常用 alias

WORKDIR /mysite
RUN yum install git -y
RUN echo "alias cls='clear'" >> /etc/profile
RUN echo "alias q='exit'" >> /etc/profile
RUN echo "alias gpull='git pull'" >> /etc/profile
RUN echo "alias gclone='git clone'" >> /etc/profile
# 安装 python3
RUN yum install epel-release -y
RUN yum install python3 python3-pip -y
# centos 的 sqlite 版本低, 无法满足高版本django 的要求

RUN pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple --user django==2.1.8 pymysql redis

# 创建运行 django 的脚本
# 服务一定前台运行, 不能使用 nohup
RUN echo -e "#!/bin/bash\npython3 manage.py runserver 0.0.0.0:80" > start_server.sh
RUN chmod +x start_server.sh
# RUN mkdir /mysite

#复制本地主机的<src>（为Docker所在目录的相对路径，文件或目录）为容器中的<dest>。目标路径不存在是，会自动创建。当使用本地目录为源目录是，推荐使用COPY。
#COPY <src> <dest>

#ENTRYPOINT,有两种格式
#1.ENTRYPOINT ["executable","param1","param2"]
#2.ENTRYPOINT command param1 param2(shell中执行)
#每个Dockerfile只能有一个ENTRYPOINT,当指定多个时，如果指定多个ENTRYPOINT，只有最后一个生效。配置容器启动后执行的命令，并且不可被docker run提>供的参数覆盖。

#EXPOSE 告诉Docker服务端容器暴露的端口号，供互联系统使用。
#EXPOSE <port> [<port>...]
EXPOSE 80

#复制指定的<src>到容器中的<dest>,其中<src>可以使Dockerfile所在目录的一个相对路径（文件或目录）;也可以是一个URL;还可以是一个tar文件（自动解压为目录）。
#ADD <src> <dest>

COPY ./mysite/ /mysite

# 启动容器, 执行该命令, 多个CMD 只执行最后一条
CMD ./start_server.sh